In [1]:
%pylab inline
#from scipy import special
from scipy.special import jn,fresnel
%pylab is deprecated, use %matplotlib inline and import the required libraries. Populating the interactive namespace from numpy and matplotlib
Diffrakció krumpli alakú résen¶
Átmenet a Fresnel és a Fraunhofer diffrakció között ¶
Az amplitudó:¶
\begin{align} U(\mathbf{R} ) &= \frac{k}{2\pi L}\,\sum_{\mathbf{r}\in S} e^{i k\left|\mathbf{R}-\mathbf{r}\right|}, \nonumber \\ I (\mathbf{R} ) &= {\left|U(\mathbf{R} )\right|}^2 , \nonumber \end{align}¶
ahol $\mathbf{R}$ az ernyő, $\mathbf{r}$ az $S$ rés egy pontja, $L$ a rés és az ernyő közti távolság, $k=2\pi/\lambda$ a hullámszám.¶
Egy rés ¶
$U(x) = \frac{1}{\sqrt{2}}\, \left[F(\eta_+)-F(\eta_-) \right]$, ahol¶
$F(z)$ a Fresnel-integrál,¶
$\eta_\pm = \pm \sqrt{2N_F} \left(\frac{1}{2} \mp \frac{x}{a} \right)$, $N_F = \frac{a^2}{\lambda z}$ a Fresnel-szám, $a$ a rés szélessége, $z$ a rés és az ernyő távolsága.¶
https://math.stackexchange.com/questions/1503415/diffraction-and-fresnel-integrals¶
Téglalap alakú rés ¶
$U(x,y) =\frac{1}{2}\, \left( \left[F(\eta_+)-F(\eta_-) \right]\right)\left( \left[F(\xi_+)-F(\xi_-) \right]\right)$, ahol¶
$F(z)$ a Fresnel-integrál,¶
$\eta_\pm = \pm \sqrt{2N_a} \left(\frac{1}{2} \mp \frac{x}{a} \right)$,¶
$\xi_\pm = \pm \sqrt{2N_b} \left(\frac{1}{2} \mp \frac{y}{b} \right)$,¶
$N_a = \frac{a^2}{\lambda z}$, $N_b = \frac{b^2}{\lambda z}$ a Fresnel-számok, $a,b$ a téglalap oldalainak hossza, $z$ a rés és az ernyő távolsága.¶
def rectangular_slit(...)
In [ ]:
In [2]:
## Szamolas osszegzessel:
def Fresnel_diff(xp,yp, L, k, xr, yr, Nr):
'''
Minden tavolsagot az 'a' resmeret egysegben merunk
xp, yp --> az ernyo (x, y) koordinatai,
L --> ernyo es a res tavolsaga 'a' resmeret egysegekben
k --> dimenziotlan hullamszam, 2*pi/lam * a
xr, yr --> a resen levo pontok (x,y) koordinatai
Nr --> a resen levo (x,y) pontok szama
'''
wrx=xr.max()
wry=yr.max()
dA = (2*wrx/Nr)*(2*wry/Nr) *k/(2*pi)/L # normalas
xxp, yyp = meshgrid(xp,yp)
Am = 0
for xr_ in xr:
for yr_ in yr:
s2 = (xxp-xr_)**2+(yyp-yr_)**2 +L**2
Am += exp(1j*k*sqrt(s2))
Am2=(abs(Am)*dA)**2
return Am2
In [3]:
def single_slit(x, F):
eta_p=sqrt(2*F)*(1/2-x)
eta_m=-sqrt(2*F)*(1/2+x)
sp,cp=fresnel(eta_p)
sm,cm=fresnel(eta_m)
tmp=(cp+1j*sp-(cm+1j*sm))/sqrt(2)
return(tmp,abs(tmp)**2)
In [4]:
def rectangular_slit(x, y, a,b, L, k):
a=1
## hosszusagegyseg
x= x ### a=1 egyseben
y= y/(b/a) #/b
# Fresnel number
Fa = k/(2*pi)/L
eta_p=sqrt(2*Fa)*(1/2-x)
eta_m=-sqrt(2*Fa)*(1/2+x)
sp,cp=fresnel(eta_p)
sm,cm=fresnel(eta_m)
tmpx=(cp+1j*sp-(cm+1j*sm))/sqrt(2)
Fb = Fa * (b/a)**2
xi_p=sqrt(2*Fb)*(1/2-y)
xi_m=-sqrt(2*Fb)*(1/2+y)
sp,cp=fresnel(xi_p)
sm,cm=fresnel(xi_m)
tmpy=(cp+1j*sp-(cm+1j*sm))/sqrt(2)
U = tmpx*tmpy
return abs(U)**2 ### /(a*b)**2
In [ ]:
In [ ]:
Ellipszis alakú rés¶
In [5]:
## A res pontjai
Nr=30 # --> a resen levo (x,y) pontok szama
x0=0
y0=0
a=1
b=2
x,y = meshgrid(linspace(-a,a,Nr),linspace(-b,b,Nr))
# find inside and outside
indx_in=((x-x0)**2/a**2+(y-y0)**2/b**2 < 1)
indx_out=~indx_in
xr, yr = (x[indx_in],y[indx_in])
plot(x[indx_out],y[indx_out],'ro')
plot(x[indx_in],y[indx_in],'bo')
axis('equal')
Out[5]:
(-1.1, 1.1, -2.2, 2.2)
In [6]:
## a ---> resmeret
k = 20000 # ---> 2*pi/lam *resmeret = k*a
L = 500.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 25 # az ernyon a mintavetelezesi pontok szama
fact = 2.
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
print('k*a = ',k)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2 =Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2)
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Ellipszis')
ax.set_aspect('equal')
%time
k*a = 20000 z = L/a = 500.0 A resen a pontok szama x, y iranyokban= 648 Az ernyon a pontok szama x, y iranyokban= 25 Fresnel-szam = 6.366197723675814 z_0/a = 6366.197723675814 min, max |Am|**2 = 8576.034187410902 2088754.8584312343 CPU times: user 1 µs, sys: 0 ns, total: 1 µs Wall time: 2.62 µs
In [7]:
print('k*a = ',k, ', L = ',L)
fig, ax = plt.subplots(1, 2,figsize=(12,6))
fact =10
xe=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff(xe,[0], L, k, xr, yr,Nr)
ax[0].plot(xe,Am2.T)
ax[0].set_xlabel(r'$x/a$',fontsize=16);
ax[0].set_title('Ellipszis')
ax[0].grid()
ye=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff([0],ye, L, k, xr, yr, Nr)
ax[1].plot(ye,Am2)
ax[1].set_xlabel(r'$y/a$',fontsize=16);
ax[1].set_title('Ellipszis')
ax[1].grid()
k*a = 20000 , L = 500.0
In [ ]:
In [8]:
## a ---> resmeret
k = 500 # ---> 2*pi/lam *resmeret = k*a
L = 10.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 20 # az ernyon a mintavetelezesi pontok szama
fact =3.0
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
xxp,yyp=meshgrid(xp,yp)
print('k*a = ',k)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2=Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2)
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Ellipszis')
ax.set_aspect('equal')
%time
k*a = 500 z = L/a = 10.0 A resen a pontok szama x, y iranyokban= 648 Az ernyon a pontok szama x, y iranyokban= 20 Fresnel-szam = 7.957747154594768 z_0/a = 159.15494309189535 min, max |Am|**2 = 2882.257979517631 3625970.8205698077 CPU times: user 1 µs, sys: 0 ns, total: 1 µs Wall time: 2.38 µs
Téglalap alakú rés¶
In [9]:
## A res pontjai
Nr= 40
a=2 ## res merete
b=4
xr = linspace(-a/2,a/2,Nr)
yr = linspace(-b/2,b/2,Nr)
xxr,yyr = meshgrid(xr,yr)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
ax.plot(xxr,yyr, 'bo')
ax.set_aspect('equal')
In [10]:
a, lam, z =(2*10**(-3), 632.0*10**(-9), 400*10**(-3))
ka = 2*pi/lam* a
za =z/a
ka,za,a**2/lam/z
Out[10]:
(19883.497807530337, 200.0, 15.82278481012658)
In [11]:
k = 2*pi/lam*a # 500 # ---> 2*pi/lam *resmeret
L = z/a # 30, 500
Np = 50
fact =100.25
xp=linspace(-fact*a,fact*a,Np)
#yp=linspace(-fact*b,fact*b,Np)
yp=xp
print('k*a = ',k)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2 =Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
# levels=linspace(0,0.0003,10)
#,linspace(minAm2,maxAm2,20)
res=contourf(xp,yp,Am2,levels=linspace(minAm2,maxAm2,20),cmap='gray') # 200
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Téglalap')
ax.set_aspect('equal')
%time
k*a = 19883.497807530337 z = L/a = 200.0 A resen a pontok szama x, y iranyokban= 40 Az ernyon a pontok szama x, y iranyokban= 50 Fresnel-szam = 15.822784810126585 z_0/a = 6329.113924050634 min, max |Am|**2 = 0.01348958673374202 86.45605545489389 CPU times: user 1 µs, sys: 0 ns, total: 1 µs Wall time: 2.15 µs
In [12]:
print('k*a = ',k, ', L = ',L)
fig, ax = plt.subplots(1, 2,figsize=(12,6))
xe=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff(xe,[0], L, k, xr, yr,Nr)
ax[0].plot(xe,Am2.T)
ax[0].set_xlabel(r'$x/a$',fontsize=16);
ax[0].set_title('Téglalap')
ax[0].grid()
ye=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff([0],ye, L, k, xr, yr, Nr)
ax[1].plot(ye,Am2)
ax[1].set_xlabel(r'$y/a$',fontsize=16);
ax[1].set_title('Téglalap')
ax[1].grid()
k*a = 19883.497807530337 , L = 200.0
In [13]:
## a ---> resmeret
k = 500 # ---> 2*pi/lam *resmeret = k*a
L = 9.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 50 # az ernyon a mintavetelezesi pontok szama
fact =0.25
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
xxp,yyp=meshgrid(xp,yp)
print('k*a = ',k)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2=Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2)
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Téglalap')
ax.set_aspect('equal')
%time
k*a = 500 z = L/a = 9.0 A resen a pontok szama x, y iranyokban= 40 Az ernyon a pontok szama x, y iranyokban= 50 Fresnel-szam = 8.841941282883075 z_0/a = 159.15494309189535 min, max |Am|**2 = 6.164546373036713 6.167255467819231 CPU times: user 1 µs, sys: 0 ns, total: 1 µs Wall time: 2.15 µs
In [ ]:
Négyzet alakú rés¶
J. Wang, W. Zhang, Y. Cui, S. Teng: Fresnel diffraction by a square aperture with rough edge¶
Paraméterek Fresnel-diffrakció esetén:
a = 6010**(-6) m $\lambda$ = 632.810(-9) m z = 1.15*10(-3) m
ka --> ka = 2pi/lam* a = 595.75
za --> z/a = 19.16
Fresnel/szam = a**2/lam/z = 4.95
In [14]:
'''
a, lam, z =(60*10**(-6), 632.8*10**(-9), 1.15*10**(-3))
ka = 2*pi/lam* a
za =z/a
ka,za,a**2/lam/z
(595.7508192648153, 19.166666666666668, 4.946957621063046)
'''
Out[14]:
'\n\na, lam, z =(60*10**(-6), 632.8*10**(-9), 1.15*10**(-3))\nka = 2*pi/lam* a\nza =z/a\nka,za,a**2/lam/z\n\n(595.7508192648153, 19.166666666666668, 4.946957621063046)\n\n'
In [15]:
## A res pontjai
Nr= 40
a=1 ## res merete
b=1
xr = linspace(-a/2,a/2,Nr)
yr = linspace(-b/2,b/2,Nr)
xxr,yyr = meshgrid(xr,yr)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
ax.plot(xxr,yyr, 'bo')
ax.set_aspect('equal')
In [16]:
## a ---> resmeret
k = 2000 # ---> 2*pi/lam *resmeret = k*a
L = 20 # 19.2 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 70 # az ernyon a mintavetelezesi pontok szama
fact =1.5
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
print('k*a = ',k, ', L = ',L)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2 =Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2,levels=linspace(minAm2,maxAm2,20))
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Négyzet')
ax.set_aspect('equal')
%time
k*a = 2000 , L = 20 z = L/a = 20 A resen a pontok szama x, y iranyokban= 40 Az ernyon a pontok szama x, y iranyokban= 70 Fresnel-szam = 15.915494309189535 z_0/a = 636.6197723675814 min, max |Am|**2 = 2.753947793747636e-07 1.574690569176662 CPU times: user 2 µs, sys: 0 ns, total: 2 µs Wall time: 2.38 µs
In [17]:
print('k*a = ',k, ', L = ',L)
print('z = L/a = ',L)
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
fig, ax = plt.subplots(1, 2,figsize=(12,6))
fact=1
xe=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff(xe,[0], L, k, xr, yr,Nr)
ax[0].plot(xe,Am2.T)
ax[0].set_xlabel(r'$x/a$',fontsize=16);
ax[0].set_title('Négyzet')
ax[0].grid()
ye=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff([0],ye, L, k, xr, yr, Nr)
ax[1].plot(ye,Am2)
ax[1].set_xlabel(r'$y/a$',fontsize=16);
ax[1].set_title('Négyzet')
ax[1].grid()
k*a = 2000 , L = 20 z = L/a = 20 Fresnel-szam = 15.915494309189535 z_0/a = 636.6197723675814
In [ ]:
Fresnel-diffrakció számolása összegzéssel és a Fresnel-integrálokkal, összehasonlítás¶
Téglalap alakú rés ¶
$U(x,y) =\frac{1}{2}\, \left( \left[F(\eta_+)-F(\eta_-) \right]\right)\left( \left[F(\xi_+)-F(\xi_-) \right]\right)$, ahol¶
$F(z)$ a Fresnel-integrál,¶
$\eta_\pm = \pm \sqrt{2N_a} \left(\frac{1}{2} \mp \frac{x}{a} \right)$,¶
$\xi_\pm = \pm \sqrt{2N_b} \left(\frac{1}{2} \mp \frac{y}{b} \right)$,¶
$N_a = \frac{a^2}{\lambda z}$, $N_b = \frac{b^2}{\lambda z}$ a Fresnel-számok, $a,b$ a téglalap oldalainak hossza, $z$ a rés és az ernyő távolsága.¶
def rectangular_slit(...)
In [ ]:
In [18]:
Fresnel_diff([0],[0], L, k, xr, yr,Nr)
Out[18]:
array([[0.8131003]])
In [19]:
x=2*10**(-3)
lamL =632*10**(-9)
s1,c1=fresnel(-x*sqrt(2/lamL))
s2,c2=fresnel(x*sqrt(2/lamL))
s1,c1,s2,c2
Out[19]:
(-0.4524126827078955, -0.5755981683187698, 0.4524126827078955, 0.5755981683187698)
In [20]:
fresnel(7),fresnel(-7)
Out[20]:
((0.4997047894534464, 0.5454670925469698), (-0.4997047894534464, -0.5454670925469698))
In [21]:
## A res pontjai
Nr= 100
a=1 ## res merete
b=1
xr = linspace(-a/2,a/2,Nr)
yr = linspace(-b/2,b/2,Nr)
In [22]:
## a ---> resmeret, a=1 kell
k = 500 # ---> 2*pi/lam *resmeret = k*a
L = 20.0 # ---> L/a = a res es az ernyo kozti tavolsag
rectangular_slit(0,0,a,b,L,k),Fresnel_diff(0,[0], L, k, xr, yr,Nr)
Out[22]:
(2.5179838354483652, array([[2.32954667]]))
In [ ]:
In [23]:
## a ---> resmeret, a=1 kell
k = 2000 # ---> 2*pi/lam *resmeret = k*a
L = 20.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 50 # az ernyon a mintavetelezesi pontok szama
########## A res pontjai
Nr= 40 # a resen a mintavetelezesi pontok szama
a=1 ## res merete
b=1
xr = linspace(-a/2,a/2,Nr)
yr = linspace(-b/2,b/2,Nr)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
a=1
fact=1
xe=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff(xe,[0], L, k, xr, yr,Nr)
print('k*a = ',k, ', L = ',L)
Fa=k/(2*pi)/L
print('Fresnel-szam = ',Fa)
print('z_0/a = ',k/(pi))
ax.plot(xe,Am2.T,label='Sum')
ax.set_xlabel(r'$x/a$',fontsize=16);
ax.set_title('Négyzet')
Um2=rectangular_slit(xe,0,a,b,L,k)
plot(xe,Um2,color='r',label='Fresnel')
legend(loc='upper right',fontsize=12)
ax.grid()
k*a = 2000 , L = 20.0 Fresnel-szam = 15.915494309189535 z_0/a = 636.6197723675814
In [24]:
## a ---> resmeret, a=1 kell
k = 2000 # ---> 2*pi/lam *resmeret = k*a
L = 20.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 50 # az ernyon a mintavetelezesi pontok szama
fact =0.75
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
print('k*a = ',k, ', L = ',L)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2 =Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2,levels=linspace(minAm2,maxAm2,20))
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Négyzet')
ax.set_aspect('equal')
%time
k*a = 2000 , L = 20.0 z = L/a = 20.0 A resen a pontok szama x, y iranyokban= 40 Az ernyon a pontok szama x, y iranyokban= 50 Fresnel-szam = 15.915494309189535 z_0/a = 636.6197723675814 min, max |Am|**2 = 0.0007612078772799595 1.7491803673262114 CPU times: user 1e+03 ns, sys: 0 ns, total: 1e+03 ns Wall time: 2.38 µs
In [29]:
## a ---> resmeret, a=1 kell
k = 2000 # ---> 2*pi/lam *resmeret = k*a
L = 2000.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 50 # az ernyon a mintavetelezesi pontok szama
########## A res pontjai
Nr= 40 # a resen a mintavetelezesi pontok szama
a=1 ## res merete
b=1
xr = linspace(-a/2,a/2,Nr)
yr = linspace(-b/2,b/2,Nr)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
a=1
fact=20
xe=linspace(-fact*a,fact*a,300)
Am2=Fresnel_diff(xe,[0], L, k, xr, yr,Nr)
print('k*a = ',k, ', L = ',L)
Fa=k/(2*pi)/L
print('Fresnel-szam = ',Fa)
print('z_0/a = ',k/(pi))
ax.plot(xe,Am2.T,label='Sum')
ax.set_xlabel(r'$x/a$',fontsize=16);
ax.set_title('Négyzet')
Um2=rectangular_slit(xe,0,a,b,L,k)
plot(xe,Um2,color='r',label='Fresnel')
legend(loc='upper right',fontsize=12)
ax.grid()
k*a = 2000 , L = 2000.0 Fresnel-szam = 0.15915494309189535 z_0/a = 636.6197723675814
In [30]:
## a ---> resmeret
## a ---> resmeret, a=1 kell
k = 2000 # ---> 2*pi/lam *resmeret = k*a
L = 2000.0 # ---> L/a = a res es az ernyo kozti tavolsag
Np = 50 # az ernyon a mintavetelezesi pontok szama
fact =20.
screen_size = fact*a # az ernyo (x,y) merete
xp=linspace(-screen_size,screen_size,Np)
yp=xp
print('k*a = ',k, ', L = ',L)
print('z = L/a = ',L)
print('A resen a pontok szama x, y iranyokban= ',len(xr))
print('Az ernyon a pontok szama x, y iranyokban= ',len(xp))
print('Fresnel-szam = ',k/(2*pi)/L)
print('z_0/a = ',k/(pi))
Am2 =Fresnel_diff(xp,yp, L, k, xr, yr, Nr)
minAm2, maxAm2=(min(flatten(Am2)),max(flatten(Am2)))
print('min, max |Am|**2 = ', minAm2,maxAm2)
fig, ax = plt.subplots(1, 1,figsize=(6,6))
#res=contourf(xp,yp,Am2,cmap='gray')
res=contourf(xp,yp,Am2,levels=linspace(minAm2,0.0025,20))
colorbar(res, fraction=0.046, pad=0.04);
ax.set_title('Négyzet')
ax.set_aspect('equal')
%time
k*a = 2000 , L = 2000.0 z = L/a = 2000.0 A resen a pontok szama x, y iranyokban= 40 Az ernyon a pontok szama x, y iranyokban= 50 Fresnel-szam = 0.15915494309189535 z_0/a = 636.6197723675814 min, max |Am|**2 = 2.0398309221325283e-12 0.024525576934586058 CPU times: user 1 µs, sys: 0 ns, total: 1 µs Wall time: 1.91 µs
VEGE¶
In [ ]: